frontend-dev-parallel-test-results.html

Report generated on 10-Jul-2025 at 15:27:44 by pytest-html v3.1.1

Summary

258 tests ran in 3022.64 seconds.

237 passed, 8 skipped, 19 failed, 0 errors, 0 expected failures, 2 unexpected passes, 0 rerun

Results

Result Test Duration Links
Failed tests/frontend/test_addon_detail.py::test_addon_detail_by_firefox_badge[Desktop] 37.26
selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="0f416d64-4439-441e-9760-471123d1b342")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_addon_detail_by_firefox_badge(selenium, base_url, variables):
extension = variables["by_firefox_addon"]
selenium.get(f"{base_url}/addon/{extension}")
addon = Detail(selenium, base_url)
> assert addon.by_firefox_badge.is_displayed()

tests/frontend/test_addon_detail.py:66:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/details.py:112: in by_firefox_badge
self.wait_for_element_to_be_displayed(self._by_firefox_badge_locator)
pages/desktop/base.py:42: in wait_for_element_to_be_displayed
self.wait.until(EC.visibility_of_element_located(element))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="0f416d64-4439-441e-9760-471123d1b342")>, method = <function visibility_of_element_located.<locals>._predicate at 0x106332840>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_addon_detail.py::test_experimental_addon[Desktop] 36.41
selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="572e5a79-ed69-4e43-8c68-e00055e6ec96")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_experimental_addon(selenium, base_url, variables):
extension = variables["experimental_addon"]
selenium.get(f"{base_url}/addon/{extension}")
addon = Detail(selenium, base_url)
> assert addon.experimental_badge.is_displayed()

tests/frontend/test_addon_detail.py:93:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/details.py:142: in experimental_badge
self.wait_for_element_to_be_displayed(self._experimental_badge_locator)
pages/desktop/base.py:42: in wait_for_element_to_be_displayed
self.wait.until(EC.visibility_of_element_located(element))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="572e5a79-ed69-4e43-8c68-e00055e6ec96")>, method = <function visibility_of_element_located.<locals>._predicate at 0x105868360>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_addon_detail.py::test_addon_with_stats_summary[Desktop] 37.96
selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="03aa9526-e0fe-4fb8-abca-8188109a8bf6")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_addon_with_stats_summary(selenium, base_url, variables):
extension = variables["addon_with_stats"]
selenium.get(f"{base_url}/addon/{extension}")
addon = Detail(selenium, base_url).wait_for_page_to_load()
# checks that a summary of users, reviews and star ratings are present
> assert addon.stats.stats_users_count > 0

tests/frontend/test_addon_detail.py:204:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/details.py:271: in stats_users_count
count = self.addon_user_stats.find_element(By.CSS_SELECTOR, "dd").text
pages/desktop/frontend/details.py:266: in addon_user_stats
self.wait.until(EC.visibility_of_element_located(self._stats_users_locator))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="03aa9526-e0fe-4fb8-abca-8188109a8bf6")>, method = <function visibility_of_element_located.<locals>._predicate at 0x105852980>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_addon_detail.py::test_addon_without_stats_summary[Desktop] 38.18
selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="00794ac8-d4ba-4919-b802-3a24b06ca5f7")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_addon_without_stats_summary(selenium, base_url, variables):
extension = variables["addon_without_stats"]
selenium.get(f"{base_url}/addon/{extension}")
addon = Detail(selenium, base_url).wait_for_page_to_load()
> assert "No Users" in addon.stats.no_user_stats

tests/frontend/test_addon_detail.py:214:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/details.py:276: in no_user_stats
return self.addon_user_stats.find_element(By.CSS_SELECTOR, "dt").text
pages/desktop/frontend/details.py:266: in addon_user_stats
self.wait.until(EC.visibility_of_element_located(self._stats_users_locator))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="00794ac8-d4ba-4919-b802-3a24b06ca5f7")>, method = <function visibility_of_element_located.<locals>._predicate at 0x105851d00>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_addon_detail.py::test_stats_reviews_summary_click[Desktop] 6.47
selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="f0ad746a-c754-4ef4-aa52-d37e443643f1")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_stats_reviews_summary_click(selenium, base_url, variables):
extension = variables["addon_with_stats"]
selenium.get(f"{base_url}/addon/{extension}")
addon = Detail(selenium, base_url).wait_for_page_to_load()
> stats_review_counts = addon.stats.stats_reviews_count

tests/frontend/test_addon_detail.py:225:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <pages.desktop.frontend.details.Detail.Stats object at 0x1063b3190>

@property
def stats_reviews_count(self):
count = self.addon_reviews_stats
> return int(count.text.replace(",", ""))
E ValueError: invalid literal for int() with base 10: '216866 Users'

pages/desktop/frontend/details.py:288: ValueError
Failed tests/frontend/test_addon_detail.py::test_more_info_addon_size[Desktop] 6.48
self = <urllib.request.HTTPSHandler object at 0x110a6b490>, http_class = <class 'http.client.HTTPSConnection'>, req = <urllib.request.Request object at 0x110a69d50>
http_conn_args = {'check_hostname': None, 'context': None}, host = 'addons-dev.allizom.org', h = <http.client.HTTPSConnection object at 0x110aabd50>

def do_open(self, http_class, req, **http_conn_args):
"""Return an HTTPResponse object for the request, using http_class.

http_class must implement the HTTPConnection API from http.client.
"""
host = req.host
if not host:
raise URLError('no host given')

# will parse host:port
h = http_class(host, timeout=req.timeout, **http_conn_args)
h.set_debuglevel(self._debuglevel)

headers = dict(req.unredirected_hdrs)
headers.update({k: v for k, v in req.headers.items()
if k not in headers})

# TODO(jhylton): Should this be redesigned to handle
# persistent connections?

# We want to make an HTTP/1.1 request, but the addinfourl
# class isn't prepared to deal with a persistent connection.
# It will try to read all remaining data from the socket,
# which will block while the server waits for the next request.
# So make sure the connection gets closed after the (only)
# request.
headers["Connection"] = "close"
headers = {name.title(): val for name, val in headers.items()}

if req._tunnel_host:
tunnel_headers = {}
proxy_auth_hdr = "Proxy-Authorization"
if proxy_auth_hdr in headers:
tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]
# Proxy-Authorization should not be sent to origin
# server.
del headers[proxy_auth_hdr]
h.set_tunnel(req._tunnel_host, headers=tunnel_headers)

try:
try:
> h.request(req.get_method(), req.selector, req.data, headers,
encode_chunked=req.has_header('Transfer-encoding'))

/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:1348:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py:1286: in request
self._send_request(method, url, body, headers, encode_chunked)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py:1332: in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py:1281: in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py:1041: in _send_output
self.send(msg)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py:979: in send
self.connect()
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py:1458: in connect
self.sock = self._context.wrap_socket(self.sock,
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py:517: in wrap_socket
return self.sslsocket_class._create(
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py:1075: in _create
self.do_handshake()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ssl.SSLSocket [closed] fd=-1, family=30, type=1, proto=0>, block = False

@_sslcopydoc
def do_handshake(self, block=False):
self._check_connected()
timeout = self.gettimeout()
try:
if timeout == 0.0 and block:
self.settimeout(None)
> self._sslobj.do_handshake()
E ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/ssl.py:1346: SSLCertVerificationError

During handling of the above exception, another exception occurred:

selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="76b1d9a6-a471-41cd-b533-66826c247cea")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_more_info_addon_size(selenium, base_url, variables):
extension = variables["detail_extension_slug"]
selenium.get(f"{base_url}/addon/{extension}")
addon = Detail(selenium, base_url).wait_for_page_to_load()
assert addon.more_info.addon_size.is_displayed()
more_info_size = addon.more_info.addon_size.text
# get the file URL and read its size
> file = urllib.request.urlopen(addon.addon_xpi)

tests/frontend/test_addon_detail.py:383:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:216: in urlopen
return opener.open(url, data, timeout)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:519: in open
response = self._open(req, data)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:536: in _open
result = self._call_chain(self.handle_open, protocol, protocol +
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:496: in _call_chain
result = func(*args)
/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:1391: in https_open
return self.do_open(http.client.HTTPSConnection, req,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <urllib.request.HTTPSHandler object at 0x110a6b490>, http_class = <class 'http.client.HTTPSConnection'>, req = <urllib.request.Request object at 0x110a69d50>
http_conn_args = {'check_hostname': None, 'context': None}, host = 'addons-dev.allizom.org', h = <http.client.HTTPSConnection object at 0x110aabd50>

def do_open(self, http_class, req, **http_conn_args):
"""Return an HTTPResponse object for the request, using http_class.

http_class must implement the HTTPConnection API from http.client.
"""
host = req.host
if not host:
raise URLError('no host given')

# will parse host:port
h = http_class(host, timeout=req.timeout, **http_conn_args)
h.set_debuglevel(self._debuglevel)

headers = dict(req.unredirected_hdrs)
headers.update({k: v for k, v in req.headers.items()
if k not in headers})

# TODO(jhylton): Should this be redesigned to handle
# persistent connections?

# We want to make an HTTP/1.1 request, but the addinfourl
# class isn't prepared to deal with a persistent connection.
# It will try to read all remaining data from the socket,
# which will block while the server waits for the next request.
# So make sure the connection gets closed after the (only)
# request.
headers["Connection"] = "close"
headers = {name.title(): val for name, val in headers.items()}

if req._tunnel_host:
tunnel_headers = {}
proxy_auth_hdr = "Proxy-Authorization"
if proxy_auth_hdr in headers:
tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]
# Proxy-Authorization should not be sent to origin
# server.
del headers[proxy_auth_hdr]
h.set_tunnel(req._tunnel_host, headers=tunnel_headers)

try:
try:
h.request(req.get_method(), req.selector, req.data, headers,
encode_chunked=req.has_header('Transfer-encoding'))
except OSError as err: # timeout error
> raise URLError(err)
E urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)>

/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/urllib/request.py:1351: URLError
Failed tests/frontend/test_extensions.py::test_browse_more_recommended_extensions[Desktop] 17.20
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="c0e71cfe-2d05-4746-9e72-e82be6e7aa3a")>

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_browse_more_recommended_extensions(base_url, selenium):
extensions = Extensions(selenium, base_url).open()
extensions.shelves.recommended_addons.browse_all()
assert "type=extension" in selenium.current_url
search_results = Search(selenium, base_url)
select = Select(search_results.filter_by_badging)
assert select.first_selected_option.text == "Recommended"
for result in search_results.result_list.search_results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_extensions.py:81:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="c0e71cfe-2d05-4746-9e72-e82be6e7aa3a")>, method = <function visibility_of_element_located.<locals>._predicate at 0x111815f80>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_extensions.py::test_browse_more_top_rated_extensions[Desktop] 17.53
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="a9e7dbb0-592a-4fe4-8a5b-be4375495c60")>

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_browse_more_top_rated_extensions(base_url, selenium):
extensions = Extensions(selenium, base_url).open()
extensions.shelves.top_rated_addons.browse_all()
assert "sort=rating&type=extension" in selenium.current_url
search_results = Search(selenium, base_url)
select = Select(search_results.filter_by_badging)
assert select.first_selected_option.text == "Recommended"
for result in search_results.result_list.search_results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_extensions.py:108:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="a9e7dbb0-592a-4fe4-8a5b-be4375495c60")>, method = <function visibility_of_element_located.<locals>._predicate at 0x110e7fec0>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_extensions.py::test_browse_more_trending_extensions[Desktop] 17.28
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="0e57fc0a-8e28-4647-ad7a-2a7d7619bc94")>

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_browse_more_trending_extensions(base_url, selenium):
extensions = Extensions(selenium, base_url).open()
extensions.shelves.trending_addons.browse_all()
assert "sort=hotness&type=extension" in selenium.current_url
search_results = Search(selenium, base_url)
select = Select(search_results.filter_by_badging)
assert select.first_selected_option.text == "Recommended"
for result in search_results.result_list.search_results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_extensions.py:140:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="0e57fc0a-8e28-4647-ad7a-2a7d7619bc94")>, method = <function visibility_of_element_located.<locals>._predicate at 0x110f99d00>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_home.py::test_browse_all_recommended_extensions_tc_id_c1137804[Desktop] 6.50
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="fbe34b2e-29c7-422f-bdf8-d26a21d9f8ae")>

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_browse_all_recommended_extensions_tc_id_c1137804(base_url, selenium):
page = Home(selenium, base_url).open().wait_for_page_to_load()
page.recommended_extensions.browse_all()
assert "type=extension" in selenium.current_url
search_page = Search(selenium, base_url)
for result in search_page.result_list.search_results:
> assert result.recommended_badge
E AttributeError: 'ResultListItems' object has no attribute 'recommended_badge'

tests/frontend/test_home.py:158: AttributeError
Failed tests/frontend/test_home.py::test_home_see_more_recommended_themes_tc_id_c95589[Desktop] 7.28
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="8e4f9630-079b-45e8-8ea7-a854f1821581")>

@pytest.mark.nondestructive
def test_home_see_more_recommended_themes_tc_id_c95589(base_url, selenium):
page = Home(selenium, base_url).open().wait_for_page_to_load()
page.recommended_themes.browse_all()
assert "type=statictheme" in selenium.current_url
search_page = Search(selenium, base_url)
for result in search_page.result_list.themes:
> assert result.recommended_badge
E AttributeError: 'ResultListItems' object has no attribute 'recommended_badge'

tests/frontend/test_home.py:210: AttributeError
Failed tests/frontend/test_home.py::test_products_footer_links_tc_id_c95105[Desktop-Browsers] 37.66
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="e955fd22-9b28-4c7f-9f94-a954ca71d0cd")>, count = 0
link = ['https://www.mozilla.org/en-US/firefox/new/?utm_campaign=SET_DEFAULT_BROWSER', '.mzp-t-product-firefox']

@pytest.mark.parametrize(
"count, link",
enumerate(
[
["https://www.mozilla.org/en-US/firefox/new/?utm_campaign=SET_DEFAULT_BROWSER", ".mzp-t-product-firefox"],
["products/vpn/", ".c-sub-navigation-title"],
["relay.firefox.com/", ".Layout_logo__V4UCI"],
["monitor.mozilla", ".PublicShell_logo__vbvvO"],
["getpocket.com", ".pocket-logo"],
]
),
ids=[
"Browsers",
"VPN",
"Relay",
"Monitor",
"Pocket",
],
)
@pytest.mark.sanity
@pytest.mark.nondestructive
def test_products_footer_links_tc_id_c95105(base_url, selenium, count, link):
page = Home(selenium, base_url).open().wait_for_page_to_load()
page.footer.products_links[count].click()
> page.wait_for_current_url(link[0])

tests/frontend/test_home.py:368:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/base.py:36: in wait_for_current_url
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="e955fd22-9b28-4c7f-9f94-a954ca71d0cd")>, method = <function url_contains.<locals>._predicate at 0x111d93560>
message = 'The url was https://www.mozilla.org/en-US/firefox/new/?utm_content=footer-link&utm_medium=referral&utm_source=addons.mozilla.org'

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message: The url was https://www.mozilla.org/en-US/firefox/new/?utm_content=footer-link&utm_medium=referral&utm_source=addons.mozilla.org

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_search.py::test_top_rated_recommended_addons_tc_id_c92462[Desktop] 17.42
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="8f41d013-756d-4b4b-a8c9-2fce1e73b682")>
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_top_rated_recommended_addons_tc_id_c92462(base_url, selenium, variables):
page = Home(selenium, base_url).open().wait_for_page_to_load()
search_page = page.search.search_for(variables["search_term"])
# apply filters and then search again
Select(search_page.filter_by_sort).select_by_visible_text("Top Rated")
Select(search_page.filter_by_type).select_by_visible_text("All")
Select(search_page.filter_by_badging).select_by_visible_text("Recommended")
page.search.search_field.clear()
page.search.search_for("")
# verify if sort filter applied correctly
for result in search_page.result_list.search_results:
assert getattr(result, "rating") >= 3.0
# verify badge type
results = search_page.result_list.search_results
for result in results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_search.py:307:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="8f41d013-756d-4b4b-a8c9-2fce1e73b682")>, method = <function visibility_of_element_located.<locals>._predicate at 0x112440e00>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_search.py::test_top_rated_recommended_extensions_tc_id_c92462[Desktop] 17.71
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="473df08c-b7b8-4fcb-88be-fbdf997009c5")>
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_top_rated_recommended_extensions_tc_id_c92462(base_url, selenium, variables):
page = Home(selenium, base_url).open().wait_for_page_to_load()
search_page = page.search.search_for(variables["search_term"])
# apply filters and then search again
Select(search_page.filter_by_sort).select_by_visible_text("Top Rated")
Select(search_page.filter_by_type).select_by_visible_text("Extension")
Select(search_page.filter_by_badging).select_by_visible_text("Recommended")
page.search.search_field.clear()
page.search.search_for("")
# verify if sort filter applied correctly
for result in search_page.result_list.search_results:
assert getattr(result, "rating") >= 3.0
# verify that no themes are displayed
print(search_page.result_list.themes)
assert len(search_page.result_list.themes) == 0
# verify badge type
results = search_page.result_list.search_results
for result in results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_search.py:329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="473df08c-b7b8-4fcb-88be-fbdf997009c5")>, method = <function visibility_of_element_located.<locals>._predicate at 0x112442020>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
------------------------------Captured stdout call------------------------------
[]
Failed tests/frontend/test_search.py::test_top_rated_recommended_themes_tc_id_c92462[Desktop] 6.95
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="7cc00324-9cda-446b-8e94-f4a6f4bd8abe")>
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_top_rated_recommended_themes_tc_id_c92462(base_url, selenium, variables):
page = Home(selenium, base_url).open().wait_for_page_to_load()
search_page = page.search.search_for(variables["search_term"])
# apply filters and then search again
Select(search_page.filter_by_sort).select_by_visible_text("Top Rated")
Select(search_page.filter_by_type).select_by_visible_text("Theme")
Select(search_page.filter_by_badging).select_by_visible_text("Recommended")
page.search.search_field.clear()
page.search.search_for("")
# verify if sort filter applied correctly
for result in search_page.result_list.search_results:
> assert getattr(result, "rating") >= 4

tests/frontend/test_search.py:344:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <pages.desktop.frontend.search.Search.SearchResultList.ResultListItems object at 0x110fc3d90>

@property
def rating(self):
"""Returns the rating"""
self.wait.until(EC.visibility_of_element_located(self._rating_locator))
rating = self.find_element(*self._rating_locator).get_property("title")
> return float(rating.split()[1])
E ValueError: could not convert string to float: 'are'

pages/desktop/frontend/search.py:194: ValueError
Failed tests/frontend/test_search.py::test_most_users_recommended_addons_tc_id_c92462[Desktop] 17.00
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="8851f901-6274-4fe5-b012-201a111c6cbd")>
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_most_users_recommended_addons_tc_id_c92462(base_url, selenium, variables):
page = Home(selenium, base_url).open().wait_for_page_to_load()
search_page = page.search.search_for("")
# apply filters and then search term
Select(search_page.filter_by_sort).select_by_visible_text("Most Users")
Select(search_page.filter_by_type).select_by_visible_text("All")
Select(search_page.filter_by_badging).select_by_visible_text("Recommended")
page.search.search_for(variables["search_term"])
# verify if elements are correctly sorted
results = [
getattr(result, "users") for result in search_page.result_list.search_results
]
assert sorted(results, reverse=True) == results
# verify badge type
results = search_page.result_list.search_results
for result in results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_search.py:372:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="8851f901-6274-4fe5-b012-201a111c6cbd")>, method = <function visibility_of_element_located.<locals>._predicate at 0x111d93a60>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_search.py::test_most_users_by_firefox_addons_tc_id_c92462[Desktop] 17.35
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="92b7a5f1-ff76-4b95-a9bd-17078481dee1")>
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_most_users_by_firefox_addons_tc_id_c92462(base_url, selenium, variables):
page = Home(selenium, base_url).open().wait_for_page_to_load()
search_page = page.search.search_for("")
# apply filters and then search term
Select(search_page.filter_by_sort).select_by_visible_text("Most Users")
Select(search_page.filter_by_type).select_by_visible_text("All")
Select(search_page.filter_by_badging).select_by_visible_text("By Firefox")
page.search.search_for(variables["search_term"])
# verify if elements are correctly sorted
results = [
getattr(result, "users") for result in search_page.result_list.search_results
]
assert sorted(results, reverse=True) == results
# verify badge type
results = search_page.result_list.search_results
for result in results:
> assert "By Firefox" in result.promoted_badge_label

tests/frontend/test_search.py:392:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="92b7a5f1-ff76-4b95-a9bd-17078481dee1")>, method = <function visibility_of_element_located.<locals>._predicate at 0x110d6da80>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_themes.py::test_browse_more_recommended_themes[Desktop] 16.48
base_url = 'https://addons-dev.allizom.org', selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="53f226c4-2c1e-4d5a-8fb7-2c6a05940416")>

@pytest.mark.sanity
@pytest.mark.nondestructive
def test_browse_more_recommended_themes(base_url, selenium):
themes = Themes(selenium, base_url).open()
themes.shelves.recommended_addons.browse_all()
assert "type=statictheme" in selenium.current_url
search_results = Search(selenium, base_url)
select = Select(search_results.filter_by_badging)
assert select.first_selected_option.text == "Recommended"
for result in search_results.result_list.search_results:
> assert "Recommended" in result.promoted_badge_label

tests/frontend/test_themes.py:80:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/desktop/frontend/search.py:233: in promoted_badge_label
self.wait.until(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <selenium.webdriver.support.wait.WebDriverWait (session="53f226c4-2c1e-4d5a-8fb7-2c6a05940416")>, method = <function visibility_of_element_located.<locals>._predicate at 0x11278d120>, message = ''

def until(self, method, message: str = ""):
"""Calls the method provided with the driver as an argument until the \
return value does not evaluate to ``False``.

:param method: callable(WebDriver)
:param message: optional message for :exc:`TimeoutException`
:returns: the result of the last call to `method`
:raises: :exc:`selenium.common.exceptions.TimeoutException` if timeout occurs
"""
screen = None
stacktrace = None

end_time = time.monotonic() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.monotonic() > end_time:
break
> raise TimeoutException(message, screen, stacktrace)
E selenium.common.exceptions.TimeoutException: Message:
E Stacktrace:
E RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
E WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:199:5
E NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:552:5
E dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16

venv/lib/python3.11/site-packages/selenium/webdriver/support/wait.py:90: TimeoutException
Failed tests/frontend/test_versions.py::test_current_version[Desktop] 6.00
selenium = <selenium.webdriver.firefox.webdriver.WebDriver (session="e69d0837-2504-4811-8159-048a582fa41d")>, base_url = 'https://addons-dev.allizom.org'
variables = {'4mb_addon_slug': '4mb_addon_slug', 'addon_detail_guid': '{f2cd2fe0-0c62-40bd-8e28-2f4d7fc0ad43}', 'addon_detail_id':...dd-ons must comply with Mozilla’s Add-on Policies and are subject to manual review at any time after submission.', ...}

@pytest.mark.nondestructive
def test_current_version(selenium, base_url, variables):
addon_url = f'addon/{variables["addon_version_install"]}/'
# get info from api
response = requests.get(f"{base_url}/api/v5/addons/{addon_url}")
addon_version = response.json()["current_version"]["version"]
addon_size = reusables.convert_bytes(
response.json()["current_version"]["file"]["size"]
)
api_date = response.json()["current_version"]["file"]["created"][:10]
# process the date to have the same format as in frontend
api_date = datetime.strptime(api_date, "%Y-%m-%d")
api_processed_date = datetime.strftime(api_date, "%b %#d, %Y")
# verify info displayed in page
page = Versions(selenium, base_url)
selenium.get(f'{base_url}/addon/{variables["addon_version_install"]}/versions/')
assert page.versions_list[0].version_number == addon_version
assert addon_size == page.versions_list[0].version_size
> assert page.versions_list[0].released_date == api_processed_date
E AssertionError: assert 'Aug 1, 2023' == 'Aug #d, 2023'
E - Aug #d, 2023
E ? ^^
E + Aug 1, 2023
E ? ^

tests/frontend/test_versions.py:104: AssertionError
XPassed tests/frontend/test_search.py::test_uppercase_has_same_suggestions_tc_id_c4491[Desktop] 10.68
No log output captured.
XPassed tests/frontend/test_static_pages.py::test_about_firefox_addons_page_links[Desktop] 39.75
No log output captured.
Skipped tests/frontend/test_addon_detail.py::test_stats_rating_counts_compare[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_addon_detail.py', 291, 'Skipped: unconditional skip')
Skipped tests/frontend/test_install.py::test_install_uninstall_dictionary_tc_id_c4508[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_install.py', 121, 'Skipped: unconditional skip')
Skipped tests/frontend/test_install.py::test_install_uninstall_langpack_tc_id_c4508[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_install.py', 157, 'Skipped: unconditional skip')
Skipped tests/frontend/test_install.py::test_about_addons_install_extension[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_install.py', 195, 'Skipped: unconditional skip')
Skipped tests/frontend/test_install.py::test_about_addons_install_theme[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_install.py', 231, 'Skipped: unconditional skip')
Skipped tests/frontend/test_install.py::test_about_addons_extension_updates[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_install.py', 257, 'Skipped: unconditional skip')
Skipped tests/frontend/test_sanity.py::test_discovery_taar_recommendations 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_sanity.py', 305, 'Skipped: unconditional skip')
Skipped tests/frontend/test_search.py::test_long_terms_dont_break_suggestions[Desktop] 0.00
('/Users/alexandru.schek/addons-release-tests/tests/frontend/test_search.py', 88, 'Skipped: this test requires more optimization')
Passed tests/frontend/test_addon_detail.py::test_extension_meta_card_tc_id_c392798[Desktop] 11.78
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_detail_author_links[Desktop] 7.37
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_detail_recommended_badge[Desktop] 7.92
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_non_promoted_addon[Desktop] 21.99
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_invisible_addon[Desktop] 79.98
------------------------------Captured stdout call------------------------------
The "click continue button" event occurred.
Passed tests/frontend/test_addon_detail.py::test_access_addon_by_guid[Desktop] 7.82
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_access_addon_by_id[Desktop] 7.56
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_access_addon_by_unicode_slug[Desktop] 7.65
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_lower_firefox_incompatibility[Desktop] 7.02
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_higher_firefox_incompatibility[Desktop] 8.65
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_platform_incompatibility_tc_id_c4453[Desktop] 7.37
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_stats_rating_bars_summary[Desktop] 6.34
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_click_stats_rating_bar[Desktop] 6.83
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_click_stats_bar_rating_counts[Desktop] 6.78
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_click_stats_grouped_ratings[Desktop] 6.27
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_contribute_button_tc_id_c4402[Desktop] 7.30
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_extension_permissions_tc_id_c139966[Desktop] 7.53
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_card_header[Desktop] 6.37
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_support_links[Desktop-0-Homepage] 8.11
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_support_links[Desktop-1-Support site] 7.97
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_support_links[Desktop-2-Support Email] 6.47
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_version_number[Desktop] 6.63
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_addon_last_update[Desktop] 6.43
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_related_categories[Desktop] 11.70
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_external_license[Desktop] 6.91
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-Mozilla Public License 2.0] 8.44
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-GNU General Public License v2.0] 9.14
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-GNU General Public License v3.0] 9.43
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-GNU Lesser General Public License v2.1] 9.38
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-GNU Lesser General Public License v3.0] 9.51
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-The MIT License] 9.27
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_builtin_licenses[Desktop-The 2-Clause BSD License] 9.45
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_reserved_license_is_not_linkified[Desktop] 7.84
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_custom_license[Desktop] 7.28
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_privacy_policy[Desktop] 7.06
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_privacy_policy_missing[Desktop] 6.10
------------------------------Captured stdout call------------------------------
The add-on does not have a Privacy Policy
Passed tests/frontend/test_addon_detail.py::test_more_info_eula[Desktop] 6.62
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_eula_missing[Desktop] 6.28
------------------------------Captured stdout call------------------------------
The add-on does not have an End User License Agreement
Passed tests/frontend/test_addon_detail.py::test_compare_more_info_latest_version[Desktop] 7.43
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_info_addon_tags[Desktop] 11.90
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_screenshot_viewer[Desktop] 12.38
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_screenshot_ui_navigation[Desktop] 8.82
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_screenshot_keyboard_navigation_tc_id_c4535[Desktop] 8.84
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_add_to_collection_card[Desktop] 8.25
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_release_notes[Desktop] 6.83
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_more_addons_by_author_card[Desktop] 7.45
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_click_addon_in_more_addons_by_author[Desktop] 7.92
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_description[Desktop] 6.52
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_developer_comments[Desktop] 6.86
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_ratings_card[Desktop] 22.97
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_recommendations[Desktop] 7.40
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_click_addon_recommendations[Desktop] 8.46
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_theme_detail_page_tc_id_c95590[Desktop] 6.98
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_current_theme_not_in_more_by_artist_previews[Desktop] 7.55
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_description_outgoing_urls[Desktop] 8.00
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_developer_comments_outgoing_urls[Desktop] 7.24
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_more_info_homepage_outgoing_urls[Desktop] 7.14
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_more_info_support_site_outgoing_urls[Desktop] 6.97
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_custom_license_outgoing_urls[Desktop] 8.08
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_privacy_policy_outgoing_urls[Desktop] 8.40
No log output captured.
Passed tests/frontend/test_addon_detail.py::test_addon_version_notes_outgoing_urls[Desktop] 9.23
No log output captured.
Passed tests/frontend/test_blog.py::test_blog_homepage_header_logo_button[Desktop] 10.87
No log output captured.
Passed tests/frontend/test_blog.py::test_articles_elements_are_displayed[Desktop] 10.03
No log output captured.
Passed tests/frontend/test_blog.py::test_open_article_by_clicking_article_image[Desktop] 9.62
No log output captured.
Passed tests/frontend/test_blog.py::test_open_article_by_clicking_article_title[Desktop] 8.90
No log output captured.
Passed tests/frontend/test_blog.py::test_open_article_by_clicking_read_more_link[Desktop] 11.14
No log output captured.
Passed tests/frontend/test_blog.py::test_article_page_loaded_correctly[Desktop] 44.41
No log output captured.
Passed tests/frontend/test_blog.py::test_article_page_header_logo_button[Desktop] 12.08
No log output captured.
Passed tests/frontend/test_blog.py::test_navbar_frontend_homepage_link[Desktop] 10.64
No log output captured.
Passed tests/frontend/test_blog.py::test_navbar_blog_homepage_link[Desktop] 9.26
No log output captured.
Passed tests/frontend/test_blog.py::test_navbar_current_article_link[Desktop] 9.39
No log output captured.
Passed tests/frontend/test_blog.py::test_next_and_previous_article_links[Desktop] 10.61
No log output captured.
Passed tests/frontend/test_blog.py::test_addon_cards_loaded_correctly[Desktop] 9.47
No log output captured.
Passed tests/frontend/test_blog.py::test_addon_card_recommendation_badge_link[Desktop] 8.83
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-0-Alerts & Updates] 7.41
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-1-Appearance] 6.88
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-2-Bookmarks] 6.82
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-3-Download Management] 6.90
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-4-Feeds, News & Blogging] 7.00
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-5-Games & Entertainment] 7.31
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-6-Language Support] 6.96
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-7-Other] 6.80
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-8-Photos, Music & Videos] 7.07
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-9-Privacy & Security] 6.98
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-10-Search Tools] 7.08
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-11-Shopping] 6.81
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-12-Social & Communication] 7.19
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-13-Tabs] 7.11
No log output captured.
Passed tests/frontend/test_extensions.py::test_extensions_categories[Desktop-14-Web Development] 6.66
No log output captured.
Passed tests/frontend/test_extensions.py::test_extension_landing_header[Desktop] 76.31
No log output captured.
Passed tests/frontend/test_extensions.py::test_recommended_extensions_shelf[Desktop] 6.75
No log output captured.
Passed tests/frontend/test_extensions.py::test_top_rated_extensions[Desktop] 6.47
No log output captured.
Passed tests/frontend/test_extensions.py::test_trending_extensions[Desktop] 6.28
No log output captured.
Passed tests/frontend/test_home.py::test_click_header_extensions_tc_id_c95105[Desktop] 9.44
No log output captured.
Passed tests/frontend/test_home.py::test_click_header_themes_tc_id_c95105[Desktop] 6.57
No log output captured.
Passed tests/frontend/test_home.py::test_logo_routes_to_homepage_tc_id_c95105[Desktop] 7.59
No log output captured.
Passed tests/frontend/test_home.py::test_firefox_addons_blog_link_tc_id_c95105[Desktop] 9.68
No log output captured.
Passed tests/frontend/test_home.py::test_developer_hub_link_tc_id_c95105[Desktop] 7.05
No log output captured.
Passed tests/frontend/test_home.py::test_extension_workshop_link_tc_id_c95105[Desktop] 7.52
No log output captured.
Passed tests/frontend/test_home.py::test_more_dropdown_navigates_correctly_tc_id_c95103[Desktop-0-Dictionaries and Language Packs] 11.47
No log output captured.
Passed tests/frontend/test_home.py::test_more_dropdown_navigates_correctly_tc_id_c95103[Desktop-1-Add-ons for Firefox Android] 11.71
No log output captured.
Passed tests/frontend/test_home.py::test_primary_hero_tc_id_c95105[Desktop] 8.49
No log output captured.
Passed tests/frontend/test_home.py::test_secondary_hero_message[Desktop] 6.48
No log output captured.
Passed tests/frontend/test_home.py::test_secondary_hero_modules_tc_id_c95105[Desktop] 6.34
No log output captured.
Passed tests/frontend/test_home.py::test_click_module_link_tc_id_c95105[Desktop-0-First module] 8.63
No log output captured.
Passed tests/frontend/test_home.py::test_click_module_link_tc_id_c95105[Desktop-1-Second module] 8.92
No log output captured.
Passed tests/frontend/test_home.py::test_click_module_link_tc_id_c95105[Desktop-2-Third module] 7.83
No log output captured.
Passed tests/frontend/test_home.py::test_home_recommended_extensions_shelf_tc_id_c95105[Desktop] 6.64
No log output captured.
Passed tests/frontend/test_home.py::test_home_see_more_popular_themes_tc_id_c95589[Desktop] 7.58
No log output captured.
Passed tests/frontend/test_home.py::test_home_popular_themes_shelf[Desktop] 6.53
No log output captured.
Passed tests/frontend/test_home.py::test_home_shelf_item_rating[Desktop] 6.84
No log output captured.
Passed tests/frontend/test_home.py::test_home_see_more_links_tc_id_c4407[Desktop] 14.49
No log output captured.
Passed tests/frontend/test_home.py::test_theme_categories_shelf_tc_id_c95105[Desktop-0-Abstract] 7.52
No log output captured.
Passed tests/frontend/test_home.py::test_theme_categories_shelf_tc_id_c95105[Desktop-1-Nature] 7.12
No log output captured.
Passed tests/frontend/test_home.py::test_theme_categories_shelf_tc_id_c95105[Desktop-2-Film] 7.19
No log output captured.
Passed tests/frontend/test_home.py::test_theme_categories_shelf_tc_id_c95105[Desktop-3-Scenery] 7.30
No log output captured.
Passed tests/frontend/test_home.py::test_theme_categories_shelf_tc_id_c95105[Desktop-4-Music] 7.20
No log output captured.
Passed tests/frontend/test_home.py::test_theme_categories_shelf_tc_id_c95105[Desktop-5-Seasonal] 7.31
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-About] 23.15
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Firefox Add-ons Blog] 10.40
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Extension Workshop] 8.21
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Developer Hub] 7.27
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Developer Policies] 7.97
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Community Blog] 9.10
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Forum] 13.41
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Report a bug] 8.69
No log output captured.
Passed tests/frontend/test_home.py::test_addons_footer_links_tc_id_c95105[Desktop-Review Guide] 6.54
No log output captured.
Passed tests/frontend/test_home.py::test_browsers_footer_links_tc_id_c95105[Desktop-Firefox Desktop] 7.54
No log output captured.
Passed tests/frontend/test_home.py::test_browsers_footer_links_tc_id_c95105[Desktop-Firefox Mobile] 8.38
No log output captured.
Passed tests/frontend/test_home.py::test_browsers_footer_links_tc_id_c95105[Desktop-Firefox Enterprise] 7.28
No log output captured.
Passed tests/frontend/test_home.py::test_products_footer_links_tc_id_c95105[Desktop-VPN] 8.16
No log output captured.
Passed tests/frontend/test_home.py::test_products_footer_links_tc_id_c95105[Desktop-Relay] 10.74
No log output captured.
Passed tests/frontend/test_home.py::test_products_footer_links_tc_id_c95105[Desktop-Monitor] 12.80
No log output captured.
Passed tests/frontend/test_home.py::test_products_footer_links_tc_id_c95105[Desktop-Pocket] 13.06
No log output captured.
Passed tests/frontend/test_home.py::test_social_footer_links_tc_id_c95105[Desktop-Firefox on Twitter] 11.96
No log output captured.
Passed tests/frontend/test_home.py::test_social_footer_links_tc_id_c95105[Desktop-Firefox on Instagram] 10.59
No log output captured.
Passed tests/frontend/test_home.py::test_social_footer_links_tc_id_c95105[Desktop-Firefox on YouTube] 8.40
No log output captured.
Passed tests/frontend/test_home.py::test_legal_footer_links_tc_id_c95105[Desktop-Privacy] 7.62
No log output captured.
Passed tests/frontend/test_home.py::test_legal_footer_links_tc_id_c95105[Desktop-Cookies] 6.93
No log output captured.
Passed tests/frontend/test_home.py::test_legal_footer_links_tc_id_c95105[Desktop-Legal] 7.82
No log output captured.
Passed tests/frontend/test_home.py::test_copyright_footer_links_tc_id_c95105[Desktop-Legal] 7.49
No log output captured.
Passed tests/frontend/test_home.py::test_copyright_footer_links_tc_id_c95105[Desktop-Creative Commons License] 7.68
No log output captured.
Passed tests/frontend/test_home.py::test_change_language_tc_id_c95098[Desktop-HomePage French Translation] 8.62
------------------------------Captured stdout call------------------------------
Test present in TC: C95105,C95098
Passed tests/frontend/test_home.py::test_change_language_tc_id_c95098[Desktop-HomePage German Translation] 8.23
------------------------------Captured stdout call------------------------------
Test present in TC: C95105,C95098
Passed tests/frontend/test_home.py::test_change_language_tc_id_c95098[Desktop-HomePage Chinese Translation] 8.26
------------------------------Captured stdout call------------------------------
Test present in TC: C95105,C95098
Passed tests/frontend/test_home.py::test_change_language_tc_id_c95098[Desktop-HomePage Russian Translation] 8.04
------------------------------Captured stdout call------------------------------
Test present in TC: C95105,C95098
Passed tests/frontend/test_home.py::test_change_language_tc_id_c95098[Desktop-HomePage Hebrew Translation] 8.15
------------------------------Captured stdout call------------------------------
Test present in TC: C95105,C95098
Passed tests/frontend/test_install.py::test_install_uninstall_extension_tc_id_c393003[Desktop] 9.27
No log output captured.
Passed tests/frontend/test_install.py::test_enable_disable_extension[Desktop] 10.06
No log output captured.
Passed tests/frontend/test_install.py::test_install_uninstall_theme_tc_id_C95591[Desktop] 9.82
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_loaded_correctly[Desktop] 6.75
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_addon_name[Desktop] 6.32
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_authors[Desktop] 7.60
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_filled_stars[Desktop] 5.99
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_rating_bars[Desktop] 9.60
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_bar_review_counter[Desktop] 7.27
No log output captured.
Passed tests/frontend/test_ratings.py::test_rating_card_average_stars[Desktop] 6.40
No log output captured.
Passed tests/frontend/test_search.py::test_search_suggestion_term_is_higher_tc_id_c4481[Desktop-Flagfox] 7.05
No log output captured.
Passed tests/frontend/test_search.py::test_search_suggestion_term_is_higher_tc_id_c4481[Desktop-Video DownloadHelper (cas-cur)] 7.62
No log output captured.
Passed tests/frontend/test_search.py::test_search_suggestion_term_is_higher_tc_id_c4481[Desktop-cas-new-addon-4] 7.05
No log output captured.
Passed tests/frontend/test_search.py::test_search_suggestion_term_is_higher_tc_id_c4481[Desktop-Tree Style Tab] 7.09
No log output captured.
Passed tests/frontend/test_search.py::test_search_suggestion_term_is_higher_tc_id_c4481[Desktop-Two little birds] 7.76
No log output captured.
Passed tests/frontend/test_search.py::test_special_chars_dont_break_suggestions_tc_id_c4489[Desktop] 7.31
No log output captured.
Passed tests/frontend/test_search.py::test_esc_key_closes_suggestion_list_tc_id_c4486[Desktop] 72.80
No log output captured.
Passed tests/frontend/test_search.py::test_click_aside_closes_suggestion_list[Desktop] 6.89
No log output captured.
Passed tests/frontend/test_search.py::test_suggestions_change_by_query_tc_id_c4487[Desktop] 8.29
No log output captured.
Passed tests/frontend/test_search.py::test_select_result_with_enter_key_tc_id_c4484[Desktop] 7.18
No log output captured.
Passed tests/frontend/test_search.py::test_select_result_with_click_tc_id_c4485[Desktop] 7.40
No log output captured.
Passed tests/frontend/test_search.py::test_suggestion_icon_is_displayed[Desktop] 6.03
No log output captured.
Passed tests/frontend/test_search.py::test_recommended_icon_is_displayed[Desktop] 6.30
No log output captured.
Passed tests/frontend/test_search.py::test_selected_result_is_highlighted[Desktop] 6.40
No log output captured.
Passed tests/frontend/test_search.py::test_search_box_character_limit[Desktop] 6.58
No log output captured.
Passed tests/frontend/test_search.py::test_search_loads_and_navigates_to_correct_page[Desktop] 6.37
No log output captured.
Passed tests/frontend/test_search.py::test_blank_search_loads_results_tc_id_c97496[Desktop] 6.83
No log output captured.
Passed tests/frontend/test_search.py::test_search_pagination[Desktop] 7.00
No log output captured.
Passed tests/frontend/test_search.py::test_filter_default[Desktop] 6.12
No log output captured.
Passed tests/frontend/test_search.py::test_filter_by_users_tc_id_c92462[Desktop] 6.53
No log output captured.
Passed tests/frontend/test_search.py::test_filter_by_rating_and_hotness_tc_id_c92462[Desktop-Top Rated-addon] 5.82
No log output captured.
Passed tests/frontend/test_search.py::test_filter_by_rating_and_hotness_tc_id_c92462[Desktop-Trending-hotness] 6.30
No log output captured.
Passed tests/frontend/test_search.py::test_filter_extensions_tc_id_c92462[Desktop] 7.30
No log output captured.
Passed tests/frontend/test_search.py::test_filter_themes[Desktop] 6.68
No log output captured.
Passed tests/frontend/test_search.py::test_filter_promoted[Desktop-recommended-Recommended] 6.54
No log output captured.
Passed tests/frontend/test_search.py::test_filter_promoted[Desktop-line-By Firefox] 6.54
No log output captured.
Passed tests/frontend/test_search.py::test_filter_promoted[Desktop-badged-All Reviewed] 6.12
No log output captured.
Passed tests/frontend/test_static_pages.py::test_review_guidelines_page_loaded_correctly[Desktop] 5.62
No log output captured.
Passed tests/frontend/test_static_pages.py::test_about_firefox_addons_page_loaded_correctly[Desktop] 5.62
No log output captured.
Passed tests/frontend/test_static_pages.py::test_blocked_addon_page_loaded_correctly[Desktop] 5.68
No log output captured.
Passed tests/frontend/test_static_pages.py::test_blocked_addon_page_does_not_have_login_button[Desktop] 5.21
No log output captured.
Passed tests/frontend/test_static_pages.py::test_review_guidelines_page_links[Desktop] 8.59
No log output captured.
Passed tests/frontend/test_static_pages.py::test_blocked_addon_page_links[Desktop] 9.80
No log output captured.
Passed tests/frontend/test_static_pages.py::test_login_expired_page[Desktop] 56.22
------------------------------Captured stdout call------------------------------
The "click continue button" event occurred.
Passed tests/frontend/test_static_pages.py::test_not_found_page[Desktop] 11.04
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-0-Abstract] 6.86
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-1-Causes] 6.15
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-2-Fashion] 6.19
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-3-Film and TV] 6.21
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-4-Firefox] 6.05
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-5-Foxkeh] 6.29
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-6-Holiday] 6.16
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-7-Music] 6.14
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-8-Nature] 6.64
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-9-Other] 6.04
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-10-Scenery] 76.32
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-11-Seasonal] 6.63
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-12-Solid] 6.09
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-13-Sports] 6.32
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_categories[Desktop-14-Websites] 6.06
No log output captured.
Passed tests/frontend/test_themes.py::test_themes_landing_header[Desktop] 5.43
No log output captured.
Passed tests/frontend/test_themes.py::test_recommended_themes[Desktop] 5.78
No log output captured.
Passed tests/frontend/test_themes.py::test_top_rated_themes[Desktop] 5.65
No log output captured.
Passed tests/frontend/test_themes.py::test_browse_more_top_rated_themes[Desktop] 6.21
No log output captured.
Passed tests/frontend/test_themes.py::test_trending_themes[Desktop] 5.70
No log output captured.
Passed tests/frontend/test_themes.py::test_browse_more_trending_themes[Desktop] 6.00
No log output captured.
Passed tests/frontend/test_translations.py::test_header_translations[Desktop-Italiano] 8.00
No log output captured.
Passed tests/frontend/test_translations.py::test_header_translations[Desktop-Español] 7.14
No log output captured.
Passed tests/frontend/test_translations.py::test_header_translations[Desktop-Deutsch] 7.14
No log output captured.
Passed tests/frontend/test_translations.py::test_header_translations[Desktop-Français] 6.16
No log output captured.
Passed tests/frontend/test_translations.py::test_shelf_titles_translations[Desktop-Italiano] 5.54
No log output captured.
Passed tests/frontend/test_translations.py::test_shelf_titles_translations[Desktop-Español] 5.46
No log output captured.
Passed tests/frontend/test_translations.py::test_shelf_titles_translations[Desktop-Deutsch] 5.96
No log output captured.
Passed tests/frontend/test_translations.py::test_shelf_titles_translations[Desktop-Français] 5.65
No log output captured.
Passed tests/frontend/test_translations.py::test_extensions_page_translations[Desktop-Italiano] 5.94
No log output captured.
Passed tests/frontend/test_translations.py::test_extensions_page_translations[Desktop-Español] 6.31
No log output captured.
Passed tests/frontend/test_translations.py::test_extensions_page_translations[Desktop-Deutsch] 6.05
No log output captured.
Passed tests/frontend/test_translations.py::test_extensions_page_translations[Desktop-Français] 5.76
No log output captured.
Passed tests/frontend/test_translations.py::test_themes_page_translations[Desktop-Italiano] 6.02
No log output captured.
Passed tests/frontend/test_translations.py::test_themes_page_translations[Desktop-Español] 5.84
No log output captured.
Passed tests/frontend/test_translations.py::test_themes_page_translations[Desktop-Deutsch] 75.61
No log output captured.
Passed tests/frontend/test_translations.py::test_themes_page_translations[Desktop-Français] 6.02
No log output captured.
Passed tests/frontend/test_versions.py::test_addon_name_in_header[Desktop] 5.87
No log output captured.
Passed tests/frontend/test_versions.py::test_versions_counter[Desktop] 5.67
No log output captured.
Passed tests/frontend/test_versions.py::test_notice_message[Desktop] 6.19
No log output captured.
Passed tests/frontend/test_versions.py::test_ratings_card[Desktop] 5.34
No log output captured.
Passed tests/frontend/test_versions.py::test_license_link[Desktop] 8.11
No log output captured.
Passed tests/frontend/test_versions.py::test_version_install_warning[Desktop] 6.74
No log output captured.
Passed tests/frontend/test_versions.py::test_add_to_firefox_button[Desktop] 7.30
No log output captured.
Passed tests/frontend/test_versions.py::test_version_download_file[Desktop] 21.60
No log output captured.